Skip to main content

Ubuntu 20 编译安装 MTProxy

安装依赖软件

  • 下载安装 libssllibssl-dev

    cd /tmp
    wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0-dev_1.0.2n-1ubuntu5_amd64.deb
    wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb
    dpkg -i libssl1.0*

    Ubuntu 20 默认的 libssllibssl-dev1.1版本,不符合 MTProxy 的依赖要求,所以不能使用 apt 命令直接安装,否则编译会报错,提示找不到库文件。

  • 安装其它信赖:

    apt install git curl build-essential zlib1g-dev

下载 MTProxy 进行编译

  • 下载 MTProxy 源码:

    git clone https://github.com/TelegramMessenger/MTProxy
    cd MTProxy
  • 编译 MTProxy

    make

    编译好的可执行文件在当前的 objs/bin 目录下

创建程序目录并获取相关密钥及配置文件

  • 创建 MTProxy 目录,并复制编译完成的程序到该目录下:

    mkdir /usr/local/mtproxy
    cd /usr/local/mtproxy
    cp /tmp/MTProxy/objs/bin/mtproto-proxy /usr/local/mtproxy
  • 获取用于链接 Telegram 服务器的密钥:

    curl -s https://core.telegram.org/getProxySecret -o proxy-secret
  • 获取相关的 Telegram配置:

    curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

生成用于链接代理的密钥

  • 生成普通密钥:

    head -c 16 /dev/urandom | xxd -ps
  • 生成使用FAKE-TLS连接的密钥:

    python3 -c 'print ("ee"+"$secret"+"sohu.com".encode().hex())'

    $secret为上一步生成的普通密钥; 此步骤生成的密钥为最终填入代理客户端的密钥。

创建服务脚本并配置开机启动

  • 创建服务脚本(注意替换相关变量的值):

    cat > /etc/systemd/system/mtproxy.service <<EOF
    [Unit]
    Description=MTProxy
    After=network.target

    [Service]
    Type=simple
    WorkingDirectory=/usr/local/mtproxy/
    ExecStart=/usr/local/mtproxy/mtproto-proxy -p 3232 -H 8787 --aes-pwd /usr/local/mtproxy/proxy-secret /usr/local/mtproxy/proxy-multi.conf -u nobody --allow-skip-dh --nat-info "10.0.xx.xx:13.67.xx.xx" -S "$secret" -D www.f6s.com

    Restart=on-failure

    [Install]
    WantedBy=multi-user.target
    EOF

    $secret为生成的普通密钥;
    -HMTProxy 服务的监听端口;

  • 加载服务脚本并设置开机启动:

    systemctl daemon-reload
    systemctl start mtproxy
    systemctl enable mtproxy